﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.Views
{

    public partial class Kundkort : UserControl
    {
        private bool IsnyKund;

       
        private KundController kC;
        private Technical.KundPercistance reg;
        public Kundkort()
        {
            InitializeComponent();
            AccessController.Instance.MainView = this;
        }
        private void Kundkort_Load(object sender, EventArgs e)
        {
            groupBoxCustomerInfo.Enabled = AccessController.Instance.UserRoleLoggedInUser.KundkortLäggTill;
            btnTaBortKund.Enabled = AccessController.Instance.UserRoleLoggedInUser.KundkortTaBort;

            Editable(false);

            groupBoxCustomerInfo.Enabled = AccessController.Instance.IntäktsbudgetUnlocked; //Disbled om Intäktsbudget är låst
        }

        private void btnNyKund_Click(object sender, EventArgs e)
        {
            IsnyKund = true;
            clearFields();
            Editable(true);
            
            tBKundnamn.TabStop = true;
            cBKundkategori.TabStop = true;
            tBKontaktFnamn.TabStop = true;
            tBKontaktEnamn.TabStop = true;
            tBKontaktTlf.TabStop = true;
            tBKundMail.TabStop = true;
        }
        private void clearFields()
        {
            foreach (Control tB in gBKundInfo.Controls)
            {
                if (tB is TextBox)
                {
                    tB.Text = "";
                }
            }
            cBKundkategori.SelectedIndex = -1;
        }
        //Om man kan ändra textboxar
        private void Editable(bool IsEditable)
        {

            tBKundnamn.Enabled = IsEditable;
            cBKundkategori.Enabled = IsEditable;
            tBKontaktFnamn.Enabled = IsEditable;
            tBKontaktEnamn.Enabled = IsEditable;
            tBKontaktTlf.Enabled = IsEditable;
            tBKundMail.Enabled = IsEditable;
            btnTaBortKund.Enabled = AccessController.Instance.UserRoleLoggedInUser.KundkortTaBort;
            if (IsnyKund)
            {
                btnTaBortKund.Enabled = false;

            }
        }
        //Sparar
        private void btnSparaKund_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("Är du säker på att du vill spara?", "Validering", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dr == DialogResult.Yes)
            {
                ValidateKund();
                tBKundnamn.TabStop = false;
                cBKundkategori.TabStop = false;
                tBKontaktFnamn.TabStop = false;
                tBKontaktEnamn.TabStop = false;
                tBKontaktTlf.TabStop = false;
                tBKundMail.TabStop = false;
                cBKundkategori.Enabled = false;
                tBKundID.Enabled = false;
                tBKundnamn.Enabled = false;
                tBKontaktFnamn.Enabled = false;
                tBKontaktEnamn.Enabled = false;
                tBKontaktTlf.Enabled = false;
                tBKundMail.Enabled = false;
                btnSparaKund.Enabled = false;
                kC.UpdateCustomer();
            }
            else if (dr == DialogResult.No)
            {
                //Gör ingenting
            }

        }

        //Samlar in kundvärden för att validera kund. 
        private void ValidateKund()
        {
            Dictionary<string, string> kundinfo = new Dictionary<string, string>();

            kundinfo.Add("kundId", tBKundID.Text);
            kundinfo.Add("kundnamn", tBKundnamn.Text);
            kundinfo.Add("kundKategori", cBKundkategori.Text);
            kundinfo.Add("kontFnamn", tBKontaktFnamn.Text);
            kundinfo.Add("kontEnamn", tBKontaktEnamn.Text);
            kundinfo.Add("kontaktTlf", tBKontaktTlf.Text);
            kundinfo.Add("kundMail", tBKundMail.Text);
            kundinfo.Add("andrad", DateTime.Now.ToString());
            kundinfo.Add("signerad", AccessController.Instance.LoggedInUser.UserName);

            //SKall valideras mot att det inte finns en med samma namn + inte för kort
            kC = new KundController();
            dGVKundkort.DataSource =  kC.Validatekund(kundinfo, IsnyKund);

        }
        //Validerar kundnamnet och kundkategori vid ny eller ändrad kund. 
        // Kollar även om kunden redan existerar.
        private void OnChanges(object sender, EventArgs e)
        {
            if (tBKundnamn.Text.Length >= 3 && cBKundkategori.Text.Length > 2)
            {
                btnSparaKund.Enabled = true;
                Editable(true);
            }
            else
            {
                btnSparaKund.Enabled = false;
            }
        }

        public void ErrorException()
        {

            MessageBox.Show("Kund finns redan registrerad", "Varning", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        public void MessageNewCustomer()
        {
            if (IsnyKund)
            {
                MessageBox.Show("Ny kund är skapad", "Informaton", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Kund är ändrad", "Informaton", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }

        public void updateDgv(string kategori, string kundnamn, string kundid)
        {
            clearFields();
            Editable(false);
            kC = new KundController();
            reg = new Technical.KundPercistance();
            dGVKundkort.DataSource = reg.GetKund(kategori, kundnamn, kundid);
        }
        // Flyttar värden från DGV till textboxarna i kundkortet
        private void dGVKundkort_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            IsnyKund = false;
            clearFields();
            int currentRow = dGVKundkort.CurrentCell.RowIndex;

            if (dGVKundkort.Rows[currentRow].Cells[0].Value != null)
            {
                tBKundID.Text = dGVKundkort.Rows[currentRow].Cells[0].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[2].Value != null)
            {
                cBKundkategori.Text = dGVKundkort.Rows[currentRow].Cells[2].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[1].Value != null)
            {
                tBKundnamn.Text = dGVKundkort.Rows[currentRow].Cells[1].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[3].Value != null)
            {
                tBKontaktTlf.Text = dGVKundkort.Rows[currentRow].Cells[3].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[4].Value != null)
            {
                tBKundMail.Text = dGVKundkort.Rows[currentRow].Cells[4].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[5].Value != null)
            {
                tBKontaktFnamn.Text = dGVKundkort.Rows[currentRow].Cells[5].Value.ToString();
            }
            if (dGVKundkort.Rows[currentRow].Cells[6].Value != null)
            {
                tBKontaktEnamn.Text = dGVKundkort.Rows[currentRow].Cells[6].Value.ToString();
            }


            // Vid tryck i DGV flyttas du till kundnamn och möjliggör tabbning.
            tBKundnamn.Focus();
            tBKundnamn.TabStop = true;
            cBKundkategori.TabStop = true;
            tBKontaktFnamn.TabStop = true;
            tBKontaktEnamn.TabStop = true;
            tBKontaktTlf.TabStop = true;
            tBKundMail.TabStop = true;

          
            
            IsnyKund = false;


            {
            }




        }


    }

}